<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>类</title>
</head>

<body>
    <script>
        // /*
        //         总结：
        //     1.类中的构造器不是必须写的，要对实例进行一些初始化的操作，如添加指定属性时才写。
        //     2.如果A类继承了B类，且A类中写了构造器，那么A类构造器中的super是必须要调用的。
        //     3.类中所定义的方法，都是放在了类的原型对象上，供实例去使用

        //                             */
        // //创建一个Person类
        class Person {
            a = 1
            // 构造器方法
            constructor(uname, uage) {
                    //设置属性时,必须使用this关键字
                    this.uname = uname
                    this.uage = uage
                }
                //speak方法放在了类的原型对象上,供实例对象使用
                //通过Person实例调用speak时,this就是实例对象
            speak() {
                console.log(`我是${this.uname},我今年${this.uage}岁了`);
                console.log(this);
            }
            eat = () => {
                console.log(this)
            }
        }
        let p1 = new Person('张三', 18)
        // // let p2 = new Person('李四', 20)
        // console.log(p1)
        // console.log(p1.__proto__ === Person.prototype)
        // console.log(Person.prototype.constructor === Person)
        console.log(Person)
        // // console.log(p2)
         p1.speak()
         p1.eat()
        // // p2.speak()

        // class student extends Person {
        //     constructor(uanme, uage, grade) {
        //         super(uanme, uage)
        //         this.grade = grade
        //     }
        // }
        // let stu = new student('小张', 25, '高一')
        // console.log(stu);



        // function foo() {
        //     return (a) => {
        //         console.log(this.a);
        //     }
        // }
        // var obj1 = {
        //     a: 2
        // }
        // var obj2 = {
        //     a: 3
        // }
        // var bar = foo.call(obj1);
        // bar.call(obj2);

        // let a = {name: '张三'}
        // console.log(a);

     
    </script>
</body>

</html>